博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springmvc+mongodb+maven 项目测试代码
阅读量:6821 次
发布时间:2019-06-26

本文共 13012 字,大约阅读时间需要 43 分钟。

你看我有一篇文章配置,或许还会有。mongodb性能测试结果。一个“快”字

源代码包,请留下邮箱

代码结构图

直接上代码

BaseDao.java

package com.yiyuwanglu.basecore.dao;import java.util.List;public interface BaseDao {	
T findById(Class
entityClass, String id);
List
findAll(Class
entityClass); void remove(Object obj); void add(Object obj); void saveOrUpdate(Object obj);}

MongoDBBaseDao.java

package com.yiyuwanglu.basecore.dao.mongodb;import java.util.Collection;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Query;import org.springframework.stereotype.Repository;import com.yiyuwanglu.basecore.dao.BaseDao;import com.yiyuwanglu.basecore.page.Page;/** * mongodb数据泛型dao类 *  * @author hjn * @version 1.0 2014-09-16 */@Repository(value = "mongoDBBaseDao")public class MongoDBBaseDao implements BaseDao {	@Autowired	@Qualifier("mongoTemplate")	protected MongoTemplate mongoTemplate;	/**	 * 依据主键id返回对象	 * 	 * @param id	 *            唯一标识	 * @return T 对象	 */	public 
T findById(Class
entityClass, String id) { return this.mongoTemplate.findById(id, entityClass); } /** * 依据类获取所有的对象列表 * * @param entityClass * 返回类型 * @return List
返回对象列表 */ public
List
findAll(Class
entityClass) { return this.mongoTemplate.findAll(entityClass); } /** * 删除一个对象 * * @param obj * 要删除的Mongo对象 */ public void remove(Object obj) { this.mongoTemplate.remove(obj); } /** * 加入对象 * * @param obj * 要加入的Mongo对象 */ public void add(Object obj) { this.mongoTemplate.insert(obj); } /** * 改动对象 * * @param obj * 要改动的Mongo对象 */ public void saveOrUpdate(Object obj) { this.mongoTemplate.save(obj); } /** * 查询并分页 * * @param entityClass * 对象类型 * @param query * 查询条件 * @param page * 分页 * @return */ public
List
findByQuery(Class
entityClass, Query query, Page page) { Long count = this.count(entityClass, query); page.setCount(count); int pageNumber = page.getCurrent(); int pageSize = page.getPageCount(); query.skip((pageNumber - 1) * pageSize).limit(pageSize); return this.mongoTemplate.find(query, entityClass); } /** * * @param entityClass * 查询对象 * @param query * 查询条件 * @return */ public
Long count(Class
entityClass, Query query) { return this.mongoTemplate.count(query, entityClass); } /** * 批量插入 * @param entityClass 对象类 * @param collection 要插入的对象集合 */ public
void addCollection(Class
entityClass, Collection
collection){ this.mongoTemplate.insert(collection, entityClass); } public MongoTemplate getMongoTemplate() { return mongoTemplate; } }
Page.java

package com.yiyuwanglu.basecore.page;import java.io.IOException;import java.io.Serializable;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.SimpleTagSupport;public class Page extends SimpleTagSupport implements Serializable {    private static final long serialVersionUID = 1L;//序列号    private Integer current;//当前页码    private Long count;//记录总数    private Integer pageCount;//每页记录数    private String path;//页面链接    private String param;//传入的參数    private boolean notQueryCount = false;//为false在翻页时查询记录总数。默认false    public Page() {        this.current = 1; // 默认第一页        this.count = 0L; // 共多少条记录        this.pageCount = 10; // 默认每页10条记录    }    @Override    public void doTag() throws JspException, IOException {        int pageSize = (int) (this.count / this.pageCount + (this.count % this.pageCount > 0 ? 1 : 0));//共多少页        //显示当前页和总页数        JspWriter out = this.getJspContext().getOut();//指定输入流,用于页面输出分页信息        StringBuffer sb = new StringBuffer();//构建StringBuffer对象,用户拼接分页标签        sb.append("
"); sb.append("
    "); //假设当前页在第一页,则首页和上一页没有超链接 if (this.current == 1) { sb.append("
  • 首页
  • 上一页
  • "); } else { sb.append("
  • 首页
  • "); sb.append("

current="); sb.append(this.current - 1); if (this.param != null && !"".equals(this.param)) { sb.append("&"); sb.append(this.param); } sb.append("\">上一页</a></li>"); } //以下的代码显示页码。当前页在中间位置 if (pageSize <= 10) { for (int i = 1; i <= pageSize; i++) { //假设页数小于等于10页,则所有显示 if (i == this.current) {//假设页码等于当前页,则该页数没有超链接 sb.append("<li class=\"current\">"); sb.append(i); sb.append("</li>"); } else {//否则给出超链接 sb.append("<li><a href=\""); sb.append(this.path); sb.append("?

current="); sb.append(i); if (this.param != null && !"".equals(this.param)) { sb.append("&"); sb.append(this.param); } sb.append("\">"); sb.append(i); sb.append("</a></li>"); } } } else {//假设大于10页。则从当前页为中心仅仅显示当中10页 int index = 1; if (this.current > 4) {//而且假设当前页大于4页,从当前页前4页開始显示10个页数 if (this.current + 4 >= pageSize) {//假设当前页+4 >= 总页数。最后10页所有显示出来 for (int j = pageSize - 9; j <= pageSize; j++) { if (j == this.current) {//假设页码等于当前页。则该页数没有超链接 sb.append("<li class=\"current\">"); sb.append(j); sb.append("</li>"); } else {//否则给定超链接 sb.append("<li><a href=\""); sb.append(this.path); sb.append("?current="); sb.append(j); if (this.param != null && !"".equals(this.param)) { sb.append("&"); sb.append(this.param); } sb.append("\">"); sb.append(j); sb.append("</a></li>"); } } } else { for (int j = this.current - 4; j <= pageSize; j++) { if (j == this.current) {//假设页码等于当前页,则该页数没有超链接 sb.append("<li class=\"current\">"); sb.append(j); sb.append("</li>"); } else {//否则给定超链接 sb.append("<li><a href=\""); sb.append(this.path); sb.append("?current="); sb.append(j); if (this.param != null && !"".equals(this.param)) { sb.append("&"); sb.append(this.param); } sb.append("\">"); sb.append(j); sb.append("</a></li>"); } index++; if (index > 10) {//假设循环到10次则退出循环 break; } } } } else { for (int i = 1; i <= pageSize; i++) { //假设页数小于等于10页,则所有显示 if (i == this.current) {//假设页码等于当前页,则该页数没有超链接 sb.append("<li class=\"current\">"); sb.append(i); sb.append("</li>"); } else {//否则给出超链接 sb.append("<li><a href=\""); sb.append(this.path); sb.append("?current="); sb.append(i); if (this.param != null && !"".equals(this.param)) { sb.append("&"); sb.append(this.param); } sb.append("\">"); sb.append(i); sb.append("</a></li>"); } index++; if (index > 10) { break; } } } } //假设当前页是最后一页,则末页和下一页没有超链接 if (this.current.equals(pageSize) || this.count == 0) { sb.append("<li class=\"disabled\">下一页</li><li class=\"disabled\">末页</li>"); } else { sb.append("<li><a href=\""); sb.append(this.path); sb.append("?current="); sb.append(this.current + 1); if (this.param != null && !"".equals(this.param)) { sb.append("&"); sb.append(this.param); } sb.append("\">下一页</a></li>"); sb.append("<li><a href=\""); sb.append(this.path); sb.append("?current="); sb.append(pageSize); if (this.param != null && !"".equals(this.param)) { sb.append("&"); sb.append(this.param); } sb.append("\">末页</a></li>"); } sb.append("</ul>"); sb.append("</div>"); out.print(sb); } /** * 获取总记录条数 * * @return */ public Long getCount() { return this.count; } /** * 设置总记录条数 * * @param count */ public void setCount(Long count) { this.count = count; } /** * 获取当前第几页 * * @return */ public Integer getCurrent() { return this.current; } /** * 设置当前第几页 * * @param current */ public void setCurrent(Integer current) { try { if (current <= 0) { this.current = 1; } else { this.current = current; } } catch (Exception e) { this.current = 1; } } /** * 获取每页多少条记录 * * @return */ public Integer getPageCount() { return this.pageCount; } /** * 设置每页多少条记录 * * @param pageCount */ public void setPageCount(Integer pageCount) { this.pageCount = pageCount; } /** * 获取URI地址 * * @return */ public String getPath() { return path; } /** * 设置URI地址 * * @param path */ public void setPath(String path) { this.path = path; } /** * 获取參数值 * * @return */ public String getParam() { return param; } /** * 设置參数值 * * @param param */ public void setParam(String param) { String[] x = param.split("&"); StringBuilder sb = new StringBuilder(); for (int i = 0; i < x.length; i++) { String[] y = x[i].split("="); if (y.length > 1 && !"".equals(y[1].trim())) { sb.append(x[i]); sb.append("&"); } } this.param = sb.toString().substring(0, sb.toString().lastIndexOf("&")); } /** * 获取总页数 * * @return */ public int getPages() { if (this.count % this.pageCount == 0) { return (int) (this.count / this.pageCount); } else { return (int) (this.count / this.pageCount + 1); } } /** * 是否为第一页 * * @return */ public boolean firstEnable() { return previoEnable(); } /** * 是否为最后一页 * * @return */ public boolean lastEnable() { return nextEnable(); } /** * 是否有下一页 * * @return */ public boolean nextEnable() { return this.current * this.pageCount < this.count; } /** * 是否有上一页 * * @return */ public boolean previoEnable() { return this.current > 1; } public boolean isNotQueryCount() { return this.notQueryCount; } public void setNotQueryCount(boolean notQueryCount) { this.notQueryCount = notQueryCount; } /** * 获取任一页第一条数据在数据集的位置. * * @param pageNo 从1開始的页号 * @param pageSize 每页记录条数 * @return 该页第一条数据 */ public int getStartOfPage(long pageNo, long pageSize) { return (int) ((pageNo - 1) * pageSize); } }

User.java

package com.yiyuwanglu.test.entity;import java.util.Date;import org.springframework.data.mongodb.core.mapping.Document;@Documentpublic class User {	private String id;	private String username;	private int age;	private Date createTime;	public User() {	}	public User(String username, int age, Date createTime) {		super();		this.username = username;		this.age = age;		this.createTime = createTime;	}	public String getId() {		return id;	}	public void setId(String id) {		this.id = id;	}	public String getUsername() {		return username;	}	public void setUsername(String username) {		this.username = username;	}	public int getAge() {		return age;	}	public void setAge(int age) {		this.age = age;	}	public Date getCreateTime() {		return createTime;	}	public void setCreateTime(Date createTime) {		this.createTime = createTime;	}}
BaseTest.java

package basetest;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:config/spring/applicationContext.xml"})public class BaseTest {   }
TestBaseDao.java

package basetest.dao;import java.util.ArrayList;import java.util.Date;import java.util.List;import javax.annotation.Resource;import org.junit.Test;import org.springframework.data.mongodb.core.query.Criteria;import org.springframework.data.mongodb.core.query.Query;import basetest.BaseTest;import com.yiyuwanglu.basecore.dao.mongodb.MongoDBBaseDao;import com.yiyuwanglu.test.entity.User;public class TestBaseDao extends BaseTest {	@Resource(name = "mongoDBBaseDao")	MongoDBBaseDao mongoDBBaseDao;	/**	 * 插入单条数据。id自己定义	 */	public void testAdd() {		User user = new User();		Date creatTime = new Date();		user.setCreateTime(creatTime);		user.setAge(10);		user.setUsername("福東江a");		this.mongoDBBaseDao.add(user);	}	/**	 * 插入100万条数据,id自己定义	 */	@Test	public void testAddCollection() {		List
userList = new ArrayList
(); for (int j = 0; j < 10; j++) { for (int i = 0; i < 100000; i++) { User user = new User(); Date creatTime = new Date(); user.setCreateTime(creatTime); user.setAge(10); user.setUsername("册南"); userList.add(user); } } this.mongoDBBaseDao.add(userList); } @Test public void testFindAll() { List
userList = this.mongoDBBaseDao.findAll(User.class); for (User user : userList) { System.out.println("id:" + user.getId() + " username:" + user.getUsername() + " age:" + user.getAge()); } System.out.println("获取所有的数据----------------------"); } @Test public void testFindById() { User user = this.mongoDBBaseDao.findById(User.class, "1234567"); System.out.println(user.getUsername()); System.out.println("获取单个对象----------------------"); } @Test public void testUpdate() { User user = this.mongoDBBaseDao.findById(User.class, "1234567"); user.setUsername("反倒是淮"); this.mongoDBBaseDao.saveOrUpdate(user); User newUser = this.mongoDBBaseDao.findById(User.class, "1234567"); System.out.println(newUser.getUsername()); System.out.println("改动数据成功"); this.mongoDBBaseDao.saveOrUpdate(user); } @Test public void testRemove() { User user = this.mongoDBBaseDao.findById(User.class, "1234567"); this.mongoDBBaseDao.remove(user); User oldUser = this.mongoDBBaseDao.findById(User.class, "1234567"); if (oldUser == null) { System.out.println(oldUser == null); System.out.println("删除对象成功"); } this.mongoDBBaseDao.add(user); } @Test public void testCount() { Query query = new Query(); Criteria criteria = new Criteria(); criteria.and("username").is("福東"); query.addCriteria(criteria); long total = this.mongoDBBaseDao.count(User.class, query); System.out.println("用户总数:" + total); } }

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
Linux之 VIM 编辑器
查看>>
实用网址集合
查看>>
【转】移动web资源整理
查看>>
【Linux】CentOS7下安装JDK详细过程
查看>>
python基础之socket编程3:粘包
查看>>
(转)Hibernate 的应用(Hibernate 的结构)?
查看>>
FP语言Lisp的特点
查看>>
考研路程
查看>>
Jenkins Slave 通过JNLP 的方式 访问Master IP 总是127.0.0.1
查看>>
Ubuntu terminator 多窗口终端的快捷键
查看>>
Add Binary leetcode
查看>>
关于pycharm中缩进、粘贴复制等文本编辑功能部分失效的解决办法
查看>>
[20190524]浅谈模糊查询.txt
查看>>
Swift 构造与析构
查看>>
Java基础学习总结--Java对象的序列化和反序列化
查看>>
关于application/x-www-form-urlencoded等字符编码的解释说明
查看>>
svn项目冲突时显示无法加载项目的解决方法
查看>>
node论坛练手
查看>>
将object强制转换成int效率测试
查看>>
[Python3网络爬虫开发实战] 1.7.3-Appium的安装
查看>>